home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
misc
/
amag
/
AM9402_2.lha
/
mmu-artikel
/
sinuskurve.asm
< prev
next >
Wrap
Assembly Source File
|
1993-10-03
|
2KB
|
105 lines
* Das folgende Programm zeichnet eine Sinuskurve mit hilfe der FPU im
* Bereich von -2Pi bis +2Pi.
MC68040
SECTION CODE
include "exec/exec_lib.i"
include "graphics/gfx.i"
include "graphics/graphics_lib.i"
include "intuition/intuition.i"
include "intuition/intuition_lib.i"
include "intuition/screens.i"
lea.l IntName,a1
moveq #0,d0
CALLEXEC OpenLibrary ; Intuition öffnen
move.l d0,_IntuitionBase
beq NoInt
lea.l GrafName,a1
moveq #0,d0
jsr _LVOOpenLibrary(a6) ; Graphics öffnen
move.l d0,_GfxBase
beq NoGfx
sub.l a0,a0
lea.l WinTags,a1
CALLINT OpenWindowTagList ; Fenster öffnen
move.l d0,SinWin
beq NoWin
move.l d0,a5
move.l wd_RPort(a5),a5 ; RastPort immer a5
move.l a5,a1
moveq #1,d0
CALLGRAF SetAPen ; Vordergrundfarbe = 1
move.l a5,a1
move.w #320,d0
moveq #51,d1
jsr _LVOMove(a6) ; Koordinatensystem
move.l a5,a1
move.w #320,d0
move.w #160,d1
jsr _LVODraw(a6) ; Y-Achse
move.l a5,a1
move.w #635,d0
moveq #111,d1
jsr _LVOMove(a6) ; und
move.l a5,a1
moveq #4,d0
moveq #111,d1
jsr _LVODraw(a6) ; X-Achse
move.l a5,a1
moveq #3,d0
jsr _LVOSetAPen(a6) ; Vordergrundfarbe = 3
fatan.x #1,fp0
fmul.x #4*2,fp0 ; 4 * (ATAN 1) = Pi
fmove.x fp0,fp7
fdiv.x #631,fp7 ; 631 Schritte (Pixel)
fneg.x fp0 ; Start bei -2Pi
move.w #630,d7 ; Schleifenzähler
SinLoop fsin.x fp0,fp1 ; der Sinus
fmul.x #50,fp1 ; vergrößern um Faktor 50
fint.x fp1 ; Runden
move.w #634,d0
sub.w d7,d0
fmove.l fp1,d1
add.w #111,d1
move.l a5,a1
jsr _LVODraw(a6) ; einzeichnen
fadd.x fp7,fp0 ; einen Scritt weiter
dbra d7,SinLoop ; fertig ?
move.l SinWin,a0 ; Wenn ja, warten
move.l wd_UserPort(a0),a0
CALLEXEC WaitPort ; bis Fenster geschloßen
Ende move.l SinWin,a0
CALLINT CloseWindow ; Fenster zu
NoWin move.l _GfxBase,a1
CALLEXEC CloseLibrary ; Graphics schließen
NoGfx move.l _IntuitionBase,a1
jsr _LVOCloseLibrary(a6) ; Intuition schließen
NoInt rts
WinTags dc.l WA_Left,0 ; Tags für OpenWindowTagList
dc.l WA_Top,0
dc.l WA_Width,640
dc.l WA_Height,200
dc.l WA_Title,WinTit
dc.l WA_Flags,WFLG_ACTIVATE!WFLG_CLOSEGADGET!WFLG_DEPTHGADGET!WFLG_DRAGBAR
dc.l WA_IDCMP,IDCMP_CLOSEWINDOW
dc.l TAG_DONE
WinTit dc.b 'Sinuskurve mit der FPU!',0
even
SinWin dc.l 0 ; Variable für Fensteradresse
IntName INTNAME
_IntuitionBase dc.l 0
GrafName GRAFNAME
_GfxBase dc.l 0
END